package com.taxx.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.taxx.entity.DataUploadRecord;
import com.taxx.entity.OperationLog;
import com.taxx.entity.TaxApiLog;

import java.util.Map;

/**
 * 系统日志服务接口
 * 
 * @author taxx
 * @since 2024-01-01
 */
public interface SystemLogService {

    /**
     * 分页获取数据导入日志
     * 
     * @param page 页码
     * @param size 每页大小
     * @param fileName 文件名
     * @param dataType 数据类型
     * @param status 状态
     * @return 分页结果
     */
    IPage<DataUploadRecord> getDataImportLogs(int page, int size, String fileName, String dataType, Integer status);

    /**
     * 分页获取API调用日志
     * 
     * @param page 页码
     * @param size 每页大小
     * @param apiName 接口名称
     * @return 分页结果
     */
    IPage<TaxApiLog> getApiLogs(int page, int size, String apiName, Integer status);

    /**
     * 分页获取操作日志
     * 
     * @param page 页码
     * @param size 每页大小
     * @param username 用户名
     * @param operation 操作类型
     * @param status 状态
     * @return 分页结果
     */
    IPage<OperationLog> getOperationLogs(int page, int size, String username, String operation, Integer status);

    /**
     * 删除指定类型的日志
     * 
     * @param logId 日志ID
     * @param logType 日志类型
     * @return 是否成功
     */
    boolean deleteLog(Long logId, String logType);

    /**
     * 清空指定类型的日志
     * 
     * @param logType 日志类型
     * @return 是否成功
     */
    boolean clearLogs(String logType);

    /**
     * 记录数据导入日志
     * 
     * @param log 导入日志
     */
    void recordDataImportLog(DataUploadRecord log);

    /**
     * 记录操作日志
     * 
     * @param log 操作日志
     */
    void recordOperationLog(OperationLog log);
}
